package com.hoe.tsb.fraft.net;

import com.hoe.tsb.fraft.Node;
import com.hoe.tsb.fraft.event.msg.FRaftMessage;

import java.util.List;

/**
 * <p>
 * 数据交换器
 * </p>
 * 项目只使用原生Socket基于UDP进行实现<br/>
 * 有需要单独使用FRaft的可以使用Netty等框架进行实现
 *
 * @author hoe
 * @since 2022/11/21
 */
public interface Exchanger {

    /**
     * 获取交换器名称
     * @return 交换器名称
     */
    String getName();

    /**
     * 设置消息接收器
     * @param rcv 消息接收器
     */
    void setReceiver(MessageReceive rcv);

    /**
     * 发送数据
     * @param raftMessage 待发送的数据
     * @throws com.hoe.tsb.fraft.exception.FRaftException 发送数据异常
     */
    void send(FRaftMessage raftMessage);

    /**
     * 关闭交换器
     */
    void close();

}
